"""
目的:
在异步编程中，如果直接调用阻塞函数，会导致整个事件循环停止，其他任务无法继续执行
这就违背了使用异步编程的初衷
使用asyncio.to_thread()方法，可以将阻塞函数放到线程中执行，从而避免阻塞事件循环
"""

import time
import asyncio


async def bad_example():
    # 直接调用阻塞函数，整个事件循环会停止
    result = time.sleep(3)  # 这里会阻塞3秒
    return result


async def good_example():
    # 在单独线程执行阻塞函数，事件循环可以继续处理其他任务
    result = await asyncio.to_thread(time.sleep, 3)
    return result


async def main():
    await asyncio.gather(
        bad_example(),
        good_example(),
    )


if __name__ == "__main__":
    asyncio.run(main())
